{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-05-08T04:25:50.492261Z",
     "start_time": "2025-05-08T04:25:50.360676Z"
    }
   },
   "source": [
    "from idlelib.history import History\n",
    "\n",
    "import torch\n",
    "import random\n",
    "import numpy as np\n",
    "from transformers import AutoTokenizer\n",
    "from model import Transformer\n",
    "from LMConfig import LMConfig"
   ],
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T04:25:51.160631Z",
     "start_time": "2025-05-08T04:25:51.157804Z"
    }
   },
   "cell_type": "code",
   "source": "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")",
   "id": "5c3c3c172cb03d8",
   "outputs": [],
   "execution_count": 15
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T04:25:52.445316Z",
     "start_time": "2025-05-08T04:25:52.441320Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def setup_seed(seed):\n",
    "    random.seed(seed)\n",
    "    np.random.seed(seed)\n",
    "    torch.manual_seed(seed)\n",
    "    torch.cuda.manual_seed(seed)\n",
    "    torch.cuda.manual_seed_all(seed)\n",
    "    torch.backends.cudnn.deterministic = True\n",
    "    torch.backends.cudnn.benchmark = False\n",
    "setup_seed(1337)"
   ],
   "id": "874b31fe6c86ca9f",
   "outputs": [],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T04:25:53.459227Z",
     "start_time": "2025-05-08T04:25:53.456227Z"
    }
   },
   "cell_type": "code",
   "source": "lm_config = LMConfig()",
   "id": "5ac0d170b8300666",
   "outputs": [],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T04:25:54.010208Z",
     "start_time": "2025-05-08T04:25:54.006140Z"
    }
   },
   "cell_type": "code",
   "source": "lm_config",
   "id": "3632bd7620405179",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LMConfig {\n",
       "  \"aux_loss_alpha\": 0.01,\n",
       "  \"dim\": 512,\n",
       "  \"dropout\": 0.0,\n",
       "  \"flash_attn\": true,\n",
       "  \"hidden_dim\": null,\n",
       "  \"max_seq_len\": 512,\n",
       "  \"model_type\": \"miniDeepSeek\",\n",
       "  \"multiple_of\": 64,\n",
       "  \"n_heads\": 16,\n",
       "  \"n_kv_heads\": 8,\n",
       "  \"n_layers\": 8,\n",
       "  \"n_routed_experts\": 4,\n",
       "  \"n_shared_experts\": true,\n",
       "  \"norm_eps\": 1e-05,\n",
       "  \"norm_topk_prob\": true,\n",
       "  \"num_experts_per_tok\": 2,\n",
       "  \"scoring_func\": \"softmax\",\n",
       "  \"seq_aux\": true,\n",
       "  \"transformers_version\": \"4.51.3\",\n",
       "  \"use_moe\": true,\n",
       "  \"vocab_size\": 6400\n",
       "}"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 18
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:08:14.570131Z",
     "start_time": "2025-05-08T05:08:13.588970Z"
    }
   },
   "cell_type": "code",
   "source": [
    "max_seq_length = 1024\n",
    "lm_config.max_seq_length = max_seq_length\n",
    "\n",
    "model = Transformer(lm_config).to(device)\n",
    "model\n"
   ],
   "id": "ef900aa35e8d2dbf",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Transformer(\n",
       "  (tok_embeddings): Embedding(6400, 512)\n",
       "  (dropout): Dropout(p=0.0, inplace=False)\n",
       "  (layers): ModuleList(\n",
       "    (0-7): 8 x TransformerBlock(\n",
       "      (attention): Attention(\n",
       "        (wq): Linear(in_features=512, out_features=512, bias=False)\n",
       "        (wk): Linear(in_features=512, out_features=256, bias=False)\n",
       "        (wv): Linear(in_features=512, out_features=256, bias=False)\n",
       "        (wo): Linear(in_features=512, out_features=512, bias=False)\n",
       "        (attn_dropout): Dropout(p=0.0, inplace=False)\n",
       "        (resid_dropout): Dropout(p=0.0, inplace=False)\n",
       "      )\n",
       "      (attention_norm): RMSNorm()\n",
       "      (fnn_norm): RMSNorm()\n",
       "      (feed_forward): MOEFeedForward(\n",
       "        (experts): ModuleList(\n",
       "          (0-3): 4 x FeedForward(\n",
       "            (w1): Linear(in_features=512, out_features=1408, bias=False)\n",
       "            (w2): Linear(in_features=1408, out_features=512, bias=False)\n",
       "            (w3): Linear(in_features=512, out_features=1408, bias=False)\n",
       "            (dropout): Dropout(p=0.0, inplace=False)\n",
       "          )\n",
       "        )\n",
       "        (gate): MOEGate()\n",
       "        (shared_experts): FeedForward(\n",
       "          (w1): Linear(in_features=512, out_features=1408, bias=False)\n",
       "          (w2): Linear(in_features=1408, out_features=512, bias=False)\n",
       "          (w3): Linear(in_features=512, out_features=1408, bias=False)\n",
       "          (dropout): Dropout(p=0.0, inplace=False)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (norm): RMSNorm()\n",
       "  (output): Linear(in_features=512, out_features=6400, bias=False)\n",
       ")"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:11:32.999606Z",
     "start_time": "2025-05-08T05:11:32.723539Z"
    }
   },
   "cell_type": "code",
   "source": [
    "model_path = 'out/full_sft_512_moe.pth'\n",
    "state_dict = torch.load(model_path, map_location=device)\n",
    "model.load_state_dict(state_dict, strict=False)\n",
    "model.eval()"
   ],
   "id": "372dfa118a0112b0",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Transformer(\n",
       "  (tok_embeddings): Embedding(6400, 512)\n",
       "  (dropout): Dropout(p=0.0, inplace=False)\n",
       "  (layers): ModuleList(\n",
       "    (0-7): 8 x TransformerBlock(\n",
       "      (attention): Attention(\n",
       "        (wq): Linear(in_features=512, out_features=512, bias=False)\n",
       "        (wk): Linear(in_features=512, out_features=256, bias=False)\n",
       "        (wv): Linear(in_features=512, out_features=256, bias=False)\n",
       "        (wo): Linear(in_features=512, out_features=512, bias=False)\n",
       "        (attn_dropout): Dropout(p=0.0, inplace=False)\n",
       "        (resid_dropout): Dropout(p=0.0, inplace=False)\n",
       "      )\n",
       "      (attention_norm): RMSNorm()\n",
       "      (fnn_norm): RMSNorm()\n",
       "      (feed_forward): MOEFeedForward(\n",
       "        (experts): ModuleList(\n",
       "          (0-3): 4 x FeedForward(\n",
       "            (w1): Linear(in_features=512, out_features=1408, bias=False)\n",
       "            (w2): Linear(in_features=1408, out_features=512, bias=False)\n",
       "            (w3): Linear(in_features=512, out_features=1408, bias=False)\n",
       "            (dropout): Dropout(p=0.0, inplace=False)\n",
       "          )\n",
       "        )\n",
       "        (gate): MOEGate()\n",
       "        (shared_experts): FeedForward(\n",
       "          (w1): Linear(in_features=512, out_features=1408, bias=False)\n",
       "          (w2): Linear(in_features=1408, out_features=512, bias=False)\n",
       "          (w3): Linear(in_features=512, out_features=1408, bias=False)\n",
       "          (dropout): Dropout(p=0.0, inplace=False)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (norm): RMSNorm()\n",
       "  (output): Linear(in_features=512, out_features=6400, bias=False)\n",
       ")"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:11:36.809181Z",
     "start_time": "2025-05-08T05:11:36.794787Z"
    }
   },
   "cell_type": "code",
   "source": "tokenizer = AutoTokenizer.from_pretrained(\"model\")",
   "id": "40b92d905ffebac1",
   "outputs": [],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:11:38.474989Z",
     "start_time": "2025-05-08T05:11:38.470482Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def generate_reply(prompt, temperature=0.5, top_k=16, stream=True):\n",
    "    messages = [{\"role\": \"user\", \"content\": prompt}]\n",
    "    new_prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_special_tokens=True)\n",
    "    new_prompt = new_prompt[-(max_seq_length - 1):]\n",
    "    input_ids = tokenizer(new_prompt).data['input_ids']\n",
    "    input_ids = torch.tensor(input_ids, dtype=torch.long, device=device).unsqueeze(0)\n",
    "\n",
    "    generated_text = \"\"\n",
    "    with torch.no_grad():\n",
    "        res_y = model.generate(input_ids, tokenizer.eos_token_id, max_new_tokens=max_seq_length, temperature=temperature, top_k=top_k, stream=stream)\n",
    "        try:\n",
    "            y = next(res_y)\n",
    "        except StopIteration:\n",
    "            print(\"no answer\")\n",
    "            return \"\"\n",
    "\n",
    "        History_idx = 0\n",
    "        while y is not None:\n",
    "            answer = tokenizer.decode(y[0].tolist())\n",
    "            if answer and answer[-1] == '�':\n",
    "                try:\n",
    "                    y = next(res_y)\n",
    "                except StopIteration:\n",
    "                    break\n",
    "                continue\n",
    "\n",
    "            if len(answer):\n",
    "                generated_text += answer[History_idx:]\n",
    "\n",
    "            try:\n",
    "                y = next(res_y)\n",
    "            except StopIteration:\n",
    "                break\n",
    "            history_idx = len(answer)\n",
    "\n",
    "    return generated_text"
   ],
   "id": "f044ae7d1ecdda8c",
   "outputs": [],
   "execution_count": 27
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:11:41.976140Z",
     "start_time": "2025-05-08T05:11:39.585101Z"
    }
   },
   "cell_type": "code",
   "source": [
    "response = generate_reply(\"长江、\")\n",
    "response"
   ],
   "id": "2bbb1c9dbdd62aae",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'江江河江河、江河、江江河、江河江河、江河、江河、江河、江江河、江河、江河江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、�江江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、�江河江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、�江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、�江河、�����的江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、�江河、�����的关系江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、江河、�江河、江河、江河、�江、江河、�江河、�����的关系。'"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:12:16.996731Z",
     "start_time": "2025-05-08T05:12:16.587381Z"
    }
   },
   "cell_type": "code",
   "source": [
    "response = generate_reply(\"你好，好久不见！\")\n",
    "response"
   ],
   "id": "5999d67b867f2bf5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'很很抱很抱歉很抱歉，很抱歉，我很抱歉，我无法很抱歉，我无法回答很抱歉，我无法回答这个问题很抱歉，我无法回答这个问题。很抱歉，我无法回答这个问题。请问很抱歉，我无法回答这个问题。请问你很抱歉，我无法回答这个问题。请问你有什么很抱歉，我无法回答这个问题。请问你有什么问题很抱歉，我无法回答这个问题。请问你有什么问题吗很抱歉，我无法回答这个问题。请问你有什么问题吗？'"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:12:19.544360Z",
     "start_time": "2025-05-08T05:12:19.096238Z"
    }
   },
   "cell_type": "code",
   "source": [
    "response = generate_reply(\"请问什么是机器学习？\")\n",
    "response"
   ],
   "id": "588b3ff1cfec8ab5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'机器学习机器学习是一种机器学习是一种人工智能机器学习是一种人工智能的应用机器学习是一种人工智能的应用，机器学习是一种人工智能的应用，它机器学习是一种人工智能的应用，它可以机器学习是一种人工智能的应用，它可以将机器学习是一种人工智能的应用，它可以将机器学习机器学习是一种人工智能的应用，它可以将机器学习算法机器学习是一种人工智能的应用，它可以将机器学习算法应用机器学习是一种人工智能的应用，它可以将机器学习算法应用于机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言处理机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言处理、机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言处理、语音机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言处理、语音识别机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言处理、语音识别等机器学习是一种人工智能的应用，它可以将机器学习算法应用于各种不同领域，例如：机器学习算法、数据分析、自然语言处理、语音识别等。'"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-08T05:12:24.098231Z",
     "start_time": "2025-05-08T05:12:23.415571Z"
    }
   },
   "cell_type": "code",
   "source": [
    "response = generate_reply(\"请问机器学习和深度学习的区别是什么？\")\n",
    "response"
   ],
   "id": "604d1855b4229d7b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'机器机器学习和机器学习和深机器学习和深度机器学习和深度学习机器学习和深度学习是机器学习和深度学习是机器学习机器学习和深度学习是机器学习领域机器学习和深度学习是机器学习领域的机器学习和深度学习是机器学习领域的一种机器学习和深度学习是机器学习领域的一种技术机器学习和深度学习是机器学习领域的一种技术手机器学习和深度学习是机器学习领域的一种技术手段机器学习和深度学习是机器学习领域的一种技术手段，机器学习和深度学习是机器学习领域的一种技术手段，它们机器学习和深度学习是机器学习领域的一种技术手段，它们都是机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势，机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势，例如机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势，例如预测机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势，例如预测未来机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势，例如预测未来趋势机器学习和深度学习是机器学习领域的一种技术手段，它们都是通过计算机算法和数据分析来实现智能化。机器学习模型可以用于预测未来趋势，例如预测未来趋势。'"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {},
   "cell_type": "code",
   "source": "",
   "id": "6fdeca3d51e97a98",
   "outputs": [],
   "execution_count": null
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
